package com.bzkj.basicinfo.mapper;

import com.bzkj.basicinfo.domain.basic.vo.BasicPicInfoVo;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * @projectName: bzkj-wms
 * @package: com.bzkj.basicinfo.mapper
 * @className: SelectMapper
 * @description: 前端下拉框数据持久层
 * @author: C1309
 * @createDate: 2024年11月20日
 * @version: v1.0
 */
public interface SelectMapper {
    /**
     * 查询仓库列表
     *
     * @return 仓库列表
     */
    ArrayList<HashMap<String, Object>> selectStoStock();

    /**
     * 查询库存状态
     *
     * @return 库存状态列表
     */
    ArrayList<HashMap<String, Object>> selectStoStatus();

    /**
     * 查询NCC用户列表
     *
     * @param userName 用户名
     * @return NCC用户列表
     */
    ArrayList<HashMap<String, Object>> selectNccUser(@Param("userName")String userName);

    /**
     * 查询NCC部门列表
     *
     * @param deptName 部门名称
     * @return NCC部门列表
     */
    ArrayList<HashMap<String, Object>> selectNccDept(@Param("deptName") String deptName);

    /**
     * 查询NCC物料列表
     *
     * @param materialName 物料名称
     * @param modeType    模式类型 (0：按名称查，1：按编码查)
     * @return NCC物料列表
     */
    ArrayList<HashMap<String, Object>> selectNccMaterial(@Param("materialName") String materialName,
                                                         @Param("modeType") int modeType);

    /**
     * 查询NCC生产厂商
     *
     * @return NCC生产厂商列表
     */
    ArrayList<HashMap<String, Object>> selectNccManufacturer(@Param("manufacturerName") String manufacturerName);

    /***
     * 查询NCC物料编码
     * @param materialName 物料名称
     * @return 查询结果
     */
    ArrayList<HashMap<String, Object>> selectNccMaterialCode(String materialName);

    /**
     * 根据NCC物料主键查询NCC物料详细信息
     *
     * @param primaryKey 主键
     * @return 查询结果
     */
    HashMap<String, Object> selectNccMaterialByPrimaryKey( String primaryKey);
    /**
     * 根据NCC物料主键、模式类型、批次号查询NCC物料库存信息
     *
     * @param primaryKey 主键
     * @param modeType   模式类型 (批号模式 0：等于任意一个 1：等于 2：不等于 3：包含 4：不包含)
     * @param batchNo    批次号
     * @return 查询结果
     */
    List<HashMap<String, Object>> selectSkuInfoByPrimaryKey(@Param("primaryKey") String primaryKey,
                                                            @Param("modeType") String modeType,
                                                            @Param("batchNo") String batchNo);

    /**
     * 根据NCC物料code查询NCC物料详细信息
     *
     * @param code 主键
     * @return 查询结果
     */
    HashMap<String, Object> selectNccMaterialByCode(String code);

    /**
     * 获取NCC供应商信息
     *
     * @param supplierName 供应商名称
     * @return 查询结果
     */
    ArrayList<HashMap<String, Object>> selectNccSupplier(@Param("supplierName") String supplierName);

    /**
     * 获取NCC供应商主键
     *
     * @param supplierName 供应商名称
     * @return 查询结果
     */
    ArrayList<HashMap<String, Object>> selectSupplierPk(@Param("supplierName") String supplierName);

    /**
     * 查询TMS物流信息
     *
     * @param logistics 物流企业名称
     * @return 查询结果
     */
    ArrayList<HashMap<String, Object>> selectTmsLogistics(@Param("logistics") String logistics);

    /**
     * 查询NCC用户主键
     *
     * @param username 用户名
     * @return
     */
    ArrayList<HashMap<String, Object>> selectNccUserCode(String username);

    ArrayList<HashMap<String, Object>> selectstockAll();

    ArrayList<HashMap<String, Object>> selectParentClassId();

    ArrayList<HashMap<String, Object>> selectAreaAll();

    List<BasicPicInfoVo> findAllBasicPicInfo(String type);

    /**
     * 查询NCC部门信息(code值)
     * @param deptName 部门名称
     * @return 查询结果
     */
    ArrayList<HashMap<String, Object>> selectNccDeptCode(String deptName);

    /***
     * 查询NCC生产厂商主键
     * @param manufacturerName 生产厂商名称
     * @return 查询结果
     */
    ArrayList<HashMap<String, Object>> selectNccManufacturerPk(String manufacturerName);
}
